{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "3af200b75c4bd924",
   "metadata": {},
   "source": [
    "# Vertex AI Multimodal Embedding\n",
    "Uses APPLICATION_DEFAULT_CREDENTIALS if no credentials is specified. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7b43f20b2f09ff70",
   "metadata": {},
   "outputs": [],
   "source": [
    "from llama_index.embeddings.vertex import VertexMultiModalEmbedding\n",
    "\n",
    "embed_model = VertexMultiModalEmbedding(\n",
    "    project=\"speedy-atom-413006\", location=\"us-central1\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a10d4efa47801541",
   "metadata": {},
   "outputs": [],
   "source": [
    "image_url = \"https://upload.wikimedia.org/wikipedia/commons/4/43/Cute_dog.jpg\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6e29951621ec9acc",
   "metadata": {},
   "source": [
    "Download this image to `data/test-image.jpg`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "45aca848dd1d17e3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<img src=\"https://upload.wikimedia.org/wikipedia/commons/4/43/Cute_dog.jpg\" width=\"500\"/>"
      ],
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from IPython.core.display import Image\n",
    "\n",
    "display(Image(url=image_url, width=500))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2d3394b6ce654ec4",
   "metadata": {},
   "outputs": [],
   "source": [
    "result = embed_model.get_image_embedding(\"data/test-image.jpg\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "75022fc91552014c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[-0.00822397694,\n",
       " 0.0167199261,\n",
       " 0.0195552949,\n",
       " 0.00935372803,\n",
       " 0.00746282,\n",
       " 0.011754944,\n",
       " -0.0363474153,\n",
       " 0.00836938061,\n",
       " -0.0170917399,\n",
       " 0.0218462963]"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "103e4c523d039fdd",
   "metadata": {},
   "outputs": [],
   "source": [
    "text_result = embed_model.get_text_embedding(\n",
    "    \"a brown and white puppy laying in the grass with purple daisies in the background\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c14b8971981d61e5",
   "metadata": {},
   "outputs": [],
   "source": [
    "text_result_2 = embed_model.get_text_embedding(\"airplanes in the sky\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "588f1585ba25bc57",
   "metadata": {},
   "source": [
    "We expect that a similar description to the image will yield a higher similarity result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "23a129176e8d1007",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.20342717022759096"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "embed_model.similarity(result, text_result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "be0c503c3dd57412",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.009063958097860215"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "embed_model.similarity(result, text_result_2)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
